package com.zjsru.plan2024.oneday;

/**
 * @Author: cookLee
 * @Date: 2024-01-23
 * 最长交替子数组
 * m 大于 1 。
 * s1 = s0 + 1 。
 */
public class AlternatingSubarray {

    /**
     * 主
     * \
     * 输入：nums = [2,3,4,3,4]
     * 输出：4
     * 解释：交替子数组有 [3,4] ，[3,4,3] 和 [3,4,3,4] 。最长的子数组为 [3,4,3,4] ，长度为4 。
     * \
     * 输入：nums = [4,5,6]
     * 输出：2
     * 解释：[4,5] 和 [5,6] 是仅有的两个交替子数组。它们长度都为 2 。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        AlternatingSubarray alternatingSubarray = new AlternatingSubarray();
        int[] nums = new int[]{2,3,4,3,4};
        System.out.println(alternatingSubarray.alternatingSubarray(nums));
    }

    /**
     * 交替子阵列
     * 双循环
     * @param nums nums
     * @return int
     */
    public int alternatingSubarray(int[] nums) {
        int ans = -1;
        int len = nums.length;
        for (int i = 0; i < len; i++) {
            for (int j = i  + 1; j < len; j++) {
                //判断接下来的元素是否满足交替子数组的条件
                int index = j - i + 1;
                //是由1/-1交替进行，规律是当前数字和最开始的数字相减分别是1/0即可
                if (nums[j] - nums[i] == (index - 1) % 2) {
                    ans = Math.max(ans, index);
                }else{
                    break;
                }
            }
        }
        return ans;
    }

}
